// 引入模块 koa
const Koa = require('koa')
// 引入 koa-static-cache
const StaticCache = require('koa-static-cache')
// 引入路由 koa-router ,直接调用
const router = require('koa-router')()
// 引入处理post请求体的中间件 koa-body
const KoaBody = require('koa-body')

// 创建web服务对象
const app = new Koa()

// 创建静态资源服务
app.use(StaticCache({
  // url 中的前缀
  prefix: '/public',
  // url 对应的静态资源存放目录
  dir: './public',
  // 启用 gzip 传输压缩
  gzip: true,
  // 监听静态资源文件变化
  dynamic: true
}))
app.use(KoaBody())

// 配置路由
router.get('/', ctx => {
  console.log(ctx.query)
  ctx.body = "首页"
})
router.get('/list/:id/:name', ctx => {
  console.log(ctx.params)
  ctx.body = "列表"
})

router.post("/addUser", ctx => {
  console.log(ctx.request.body)
  ctx.body = "列表"
})

// 获取参数三种方式
/**
 * ctx.query  -> http://localhost:8080/home?username=111&age=11
 *    1. 对应的是？后的查询（搜索）参数
 *    2. 自动解析成对象 {username：111，age：11}
 * ctx.params -> 在后台做一个配置参数路由（动态路由） /list/:id -> 前端地址http://localhost:8080/list/123456  
 *    1. :id  ->  123456
 *    2. 自动解析成对象 { id:"123456" }
 * ctx.request.body -> post方式提交的数据使用ctx.request.body解析，
 *    1. 依赖于第三方模块 koa-body/koa-parser
 *    2. 自动解析成对象
 */
// 路由注册 放到中间件中
app.use(router.routes())

// 监听 
app.listen(8080, () => {
  console.log("run on port 8080")
})
